package com.liangtian.mdm.system.permission.dao;

import com.liangtian.mdm.base.BaseDao;
import com.liangtian.mdm.system.menu.model.Menu;
import com.liangtian.mdm.system.permission.model.SysRole;
import com.liangtian.mdm.system.permission.model.SysRoleMenu;
import com.liangtian.mdm.system.permission.model.SysRoleUGroup;
import com.liangtian.mdm.system.permission.model.SysRoleUser;
import com.liangtian.mdm.system.user.model.SysUser;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;


@Repository
public interface SysRoleDao extends BaseDao<SysRole> {

    /**
     * @param role 对象
     * @return 受影响的行数
     * @desc 编辑 （编辑数据；启用1；禁用0）
     */
    int editRole(SysRole role);

    /**
     * @param role 对象
     * @return 受影响的行数
     * @desc 新增角色
     */
    int addRole(SysRole role);

    /**
     * @param params ids的结合信息
     * @return 受影响的行数
     * @desc 批量删除角色数据
     */
    int batchDeleteRole(Map<String, Object> params);

    /**
     * @param role 分页数据的信息
     * @return 角色信息
     * @desc 获取全部的角色信息
     */
    List<Map<String, Object>> queryAllRole(SysRole role);

    /**
     * @param params
     * @return 受影响的行数
     * @desc 删除角色权限的关联表数据
     */
    int deleteRolePermissionRef(Map<String, Object> params);

    /**
     * @return 受影响的行数
     * @desc 编辑角色状态
     */
    int editRoleStatus(Map<String, Object> params);

    /**
     * @param role 角色对象
     * @return 返回的结果
     * @desc 根据Id查询角色信息
     */
    SysRole queryDocumentByRole(SysRole role);

    /**
     * @return 组织机构页面对象
     * @desc 查询数据字典中机密级别的值
     */
    List<Map<String, Object>> queryAllDitconaryList(Map<String, Object> params);

    /**
     * @param objectMap
     * @return 受影响的行数
     * @desc 插入角色权限中间表
     */
    int insertRolePermissionRef(Map<String, Object> objectMap);

    /**
     * @param params
     * @return 受影响的行数
     * @desc 批量删除角色资源数据
     * @params参数详情 roleId 角色编号
     */

    int batchDeleteRolePermissionRef(Map<String, Object> params);

    List<SysRole> queryAllRoleList(SysRole role);

    List<SysRole> queryAllRoleShowList(Map<String, Object> map);

    void deleteByIds(String idsStr);

    void inseterRole(SysRole role);

    void saveRoleEdit(SysRole role);

    List<SysUser> queryUsersRoleList(Map<String, Object> map);

    List<SysUser> queryNoSelUserList(Map<String, Object> map);

    void deleteRoleUser(Map<String, Object> map);

    void insertRoleUser(List<SysRoleUser> userList);

    List<SysRoleUGroup> queryNoSelUGList(Map<String, Object> map);

    List<SysRoleUGroup> queryUGRoleList(Map<String, Object> map);

    void insertRoleUserGroup(List<SysRoleUGroup> ugList);

    void deleteRoleUserGroup(Map<String, Object> param);

    void saveBindResourcesInfo(List<SysRoleMenu> sysRoleMenuList);

    void delBindResourcesInfo(String roleId);

    List<SysRoleMenu> getBindRoleIds(String roleId);

    List<Menu> getAllmenuTree();

    List<SysRoleMenu> getSelectNode(String roleId);

    List<SysRoleMenu> getSelectNodeByUserId(String roleId);

    List<SysRoleMenu> getSelectNodeByGroupId(String roleId);

    List<SysRole> getRoleListByUserAccount(String userAccount);

}